/* 
 * File:   Engine.h
 * Author: ferranferri
 *
 * Created on May 29, 2013, 5:39 PM
 */

#ifndef _Z3D_ENGINE_H_
#define	_Z3D_ENGINE_H_

#include "core/core_utils.h"
#include "Log/LogSystem.h"
#include "graphics/window/zelWindowGL3.h"
#include "graphics/geometry/geometry.h"
#include "graphics/scenemanager/sceneManager.h"
#include "graphics/z3d_graphics.h"

namespace z3d{
    namespace utils{
        class Properties;
        class CVirtualFileSystem;
    }
    
    class Engine {
        z3d::utils::Properties* _properties;
        glog::CGlobalLog* _log;
        // TODO: Poner toda la parte grafica en un modulo llamado graphics (??)
        zelWindowGL3 _window;
        bool _isRunning;
        z3d::utils::CVirtualFileSystem* _vfs;
    protected:
        bool initProperties(const std::string& properties);
        bool initLog();
        const std::string updateClientVersion();
        bool initWindow();
        bool initVFS();
    public:
        Engine();
        bool init(const std::string& properties);
        bool isRunning();
        bool update();
        bool shutDown();
        virtual ~Engine();
    private:

    };
}
#endif	/* _Z3D_ENGINE_H_ */

